package com.hanamaki.array;

public class Demo11 {
    public static void main(String[] args) {

        /* 创建棋盘  原始的数组  11  11 */

        /* 黑子代表 1  白子代表 2      0 代表无效 */
        int[][] array = new int[11][11];
        /* 动态初始化赋值 */
        array[1][2] = 1;
        array[2][3] = 2;
        System.out.println("原始数组的格式");
        for (int[] ints : array) {
            for (int anInt : ints) {
                System.out.print(anInt + "\t");
            }
            System.out.println();
        }

        /* 获取原始数组中有效值的个数*/
        /* 遍历二维数组 得到 有效值的个数 */
        int success_count = 0;
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                if (array[i][j] != 0) {
                    success_count++;
                }
            }
        }

        System.out.println("有效值的个数为：" + success_count);


        /*创建稀疏数组的格式 */
        /* 稀疏数组的 行 根据有效值的个数来确定*/
        int[][] array1 = new int[success_count + 1][3];
        /* 创建稀疏数组的 标题 */
        array1[0][0] = array.length;
        array1[0][1] = array[0].length;
        array1[0][2] = success_count;

        System.out.println("打印稀疏数组的格式");
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt + "\t");
            }
            System.out.println();
        }


        /* 将原始数组中的 有效值的嗯 行 列  值  分别存放到 稀疏数组中*/
        /* 定义 稀疏数组中元素 开始存放的行号 */
        int line_num = 1;
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                /* 如果 不为 0 就是有效值 */
                if (array[i][j] != 0) {
                    array1[line_num][0] = i;
                    array1[line_num][1] = j;
                    array1[line_num][2] = array[i][j];
                    line_num++;
                }
            }
        }
        System.out.println("打印稀疏数组的格式");
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt + "\t");
            }
            System.out.println();
        }

    }
}